home *** CD-ROM | disk | FTP | other *** search
/ MACD 5 / MACD 5.bin / workbench / libs / amigametafile.lha / AmigaMetaFormat / E / test.e < prev   
Text File  |  1997-05-05  |  4KB  |  97 lines

  1. /*
  2. **  this code is not a example for well programming :-)
  3. **  but for use of amigametaformat.library and parsing AMF files
  4. **  compile with 'sc test LINK'
  5. */
  6.  
  7. MODULE  'intuition/screens',
  8.         'intuition/intuition',
  9.         'graphics/view',
  10.         'iffparse',
  11.         'libraries/iffparse',
  12.         'dos/dos',
  13.         'exec/memory',
  14.         'amigametaformat/amigametaformat',
  15.         'amigametaformat/amigametaformat.const'
  16.  
  17. PROC main()
  18. DEF file,iff:PTR TO iffhandle,scr:PTR TO screen,wnd:PTR TO window,myarray:PTR TO LONG
  19. DEF amf,function,count,error,sp:PTR TO storedproperty
  20.   IF iffparsebase:=OpenLibrary('iffparse.library',37)
  21.     IF amigametaformatbase:=OpenLibrary('amigametaformat.library',6)
  22.       IF scr:=OpenScreenTagList(NIL,
  23.               [SA_WIDTH,-1,
  24.                SA_HEIGHT,-1,
  25.                SA_DEPTH,4,
  26.                SA_FULLPALETTE,TRUE,
  27.                SA_SHAREPENS,TRUE,
  28.                SA_PENS,[-1],
  29.                SA_TYPE,CUSTOMSCREEN,
  30.                NIL])
  31.         IF wnd:=OpenWindowTagList(NIL,
  32.                 [WA_CUSTOMSCREEN,scr,
  33.                  WA_IDCMP,IDCMP_MOUSEBUTTONS,
  34.                  WA_TITLE,'AMF file viewer (simple)',
  35.                  NIL])
  36.           IF file:=Open(arg,MODE_OLDFILE)
  37.             IF iff:=AllocIFF()
  38.               InitIFFasDOS(iff)
  39.               iff.stream:=file
  40.               IF OpenIFF(iff,IFFF_READ)=0
  41.                 IF PropChunks(iff,["AMFF","VERS","AMFF","FVER","AMFF","HEAD","AMFF","BODY"],4)=0
  42.                   IF StopChunk(iff,"AMFF","BODY")=0
  43.                     IF ParseIFF(iff,IFFPARSE_SCAN)=0
  44.                       IF sp:=FindProp(iff,"AMFF","VERS")
  45.                         WriteF('Alte Version: \d.\d\n',Long(sp.data),Long(sp.data+4))
  46.                       ENDIF
  47.                       IF sp:=FindProp(iff,"AMFF","FVER")
  48.                         WriteF('Neue Version: \s\n',sp.data)
  49.                       ENDIF
  50.                       IF sp:=FindProp(iff,"AMFF","HEAD")
  51.                         WriteF('Dimension: \d x \d\n',Long(sp.data),Long(sp.data+4))
  52.                       ENDIF
  53.                       IF amf:=AmfOpen(AMF_WINDOW,[wnd,scr.viewport.colormap])
  54.                         WHILE ReadChunkBytes(iff,{function},4)=4
  55.                           IF ReadChunkBytes(iff,{count},4)=4
  56.                             IF myarray:=AllocMem(count*4,MEMF_CLEAR)
  57.                               IF ReadChunkBytes(iff,myarray,count*4)=(count*4)
  58.                                 error:=AmfFunction(amf,myarray,function,count)
  59.                                 IF error<>0 THEN WriteF('function:\d count:\d error:\d\n',function,count,error)
  60.                               ENDIF
  61.                               FreeMem(myarray,count*4)
  62.                             ENDIF
  63.                           ENDIF
  64.                         ENDWHILE
  65.                         AmfClose(amf)
  66.                       ENDIF
  67.                     ENDIF
  68.                   ENDIF
  69.                 ENDIF
  70.                 CloseIFF(iff)
  71.               ENDIF
  72.               FreeIFF(iff)
  73.             ENDIF
  74.             Close(file)
  75.           ELSE
  76.             WriteF('can`t open file: \s\n',arg)
  77.           ENDIF
  78.           WaitPort(wnd.userport)
  79.           CloseWindow(wnd)
  80.         ELSE
  81.           WriteF('no window\n')
  82.         ENDIF
  83.         CloseScreen(scr)
  84.       ELSE
  85.         WriteF('no screen\n')
  86.       ENDIF
  87.       CloseLibrary(amigametaformatbase)
  88.     ELSE
  89.       WriteF('no amigametaformat.library 6+\n')
  90.     ENDIF
  91.     CloseLibrary(iffparsebase)
  92.   ELSE
  93.     WriteF('no iffparse.library 37+\n')
  94.   ENDIF
  95. ENDPROC
  96.  
  97.